import base from "@/config/baseUrl";
import store from '@/store';

// 初始化请求配置
uni.$u.http.setConfig((config) => {
    /* config 为默认全局配置*/
    config.baseURL = base.baseUrl; /* 根域名 */
    config.header = {
        'Content-Type': 'application/json',
    }

    config.custom = {
        load: true, // 是否显示加载动画
        isToken: true // 是否携带token
    }

    return config
})

// 请求拦截
uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
    // 初始化请求拦截器时，会执行此方法，此时data为undefined，赋予默认{}
    config.data = config.data || {}

    if (config?.custom?.isToken) {
        config.header['Authorization'] = `Bearer ${store.state.token}`
    }

    if (config?.custom?.load) {
        // 打开加载动画
        store.commit("setLoadingShow", true);
    }
    
    return config 
}, config => { // 可使用async await 做异步操作
    return Promise.reject(config)
})

// 响应拦截
uni.$u.http.interceptors.response.use(async (response) => { /* 对响应成功做点什么 可使用async await 做异步操作*/
    // 关闭加载动画
    store.commit("setLoadingShow", false);
    const data = response.data

    // code:  200、请求成功
    if(data.code == 200) {
      return data
    } else {
		return data
	    //uni.$u.toast(data.message)
    }
}, (response) => {
    // 关闭加载动画
    store.commit("setLoadingShow", false);
    uni.$u.toast('请检查网络或服务器')
    return Promise.reject(response)
})